#ifndef engine_pluginhelper_h
#define engine_pluginhelper_h

#include <dlfcn.h>
#include <map>
#include <string>
#include "Plugin.h"

using std::string;

namespace ddserver
{
namespace engine 
{

typedef Plugin * (*create_func)();
typedef void (*destroy_func)(Plugin * plugin);

class PluginHelper
{
public:
    PluginHelper();
    ~PluginHelper();

    void load(const string & plugin);
    void unload(const string & plugin);
    void show();
    void * get(const string & plugin, const string & symbol);

private:
    std::map<string, void *> m_plugins;
};

}
}

#endif //engine_pluginhelper_h


